package com.aaa.web.dao.emp;

import com.aaa.web.dao.emp.Impl.EmpDao;
import com.aaa.web.entity.Emp;
import com.aaa.web.util.BaseDao;
import com.aaa.web.util.BaseUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @ProjectName java_web _demo_20230303_AllServlet
 * @Author 李江波
 * @Date 2023/03/03 上午 09:10
 * @Version 1.0.0
 * @Description
 */
public class  EmpDaoImpl implements EmpDao {

    public List<Emp> queryByPage(int start, int pageSize, Emp emp) {
        //定义查询sql  where 1=1 恒成立 为拼接and条件做准备
        String sql = "select e.emp_id,e.emp_name,e.sex,e.phone_num, e.province,e.hire_date,e.dept_no,d.dept_name,e.salary,e.password from tb_emp e,tb_dept d  where d.dept_no=e.dept_no and 1=1 ";
        //定义一个list来动态放置查询条件
        List<String> paramList = new ArrayList<>();
        //判断部门是否为空
        if (emp!=null){
            //判断部门名称是否为空
            if (emp.getEmpName()!=null&&!"".equals(emp.getEmpName())){
                sql+="and emp_name like ?";
                paramList.add("%"+emp.getEmpName()+"%");
            }
            if (emp.getProvince()!=null&&!"".equals(emp.getProvince())){
                sql+="and province like ?";
                paramList.add("%"+emp.getProvince()+"%");
            }
        }
        sql+=" limit " + start +","+pageSize;
        System.out.println("execute sql -------- " + sql);
        //paramList.toArray()集合转数组
        return BaseDao.executeQueryA(sql,Emp.class,paramList.toArray());
    }

    @Override
    public int queryTotal(Emp emp) {
        //定义查询sql  where 1=1 恒成立 为拼接and条件做准备
        String sql = "select * from tb_emp where 1=1 ";
        //定义一个list来动态放置查询条件
        List<String> paramList = new ArrayList<>();
        //判断部门是否为空
        if (emp!=null){
            //判断部门名称是否为空
            if (emp.getEmpName()!=null&&!"".equals(emp.getEmpName())){
                sql+="and emp_name like ?";
                paramList.add("%"+emp.getEmpName()+"%");
            }
            if (emp.getProvince()!=null&&!"".equals(emp.getProvince())){
                sql+="and province like ?";
                paramList.add("%"+emp.getProvince()+"%");
            }
        }
        System.out.println("execute sql  total -------- " + sql);
        List<Emp> mapList = BaseDao.executeQueryA(sql,Emp.class,paramList.toArray());
        if (mapList!=null&&mapList.size()>0){
            return mapList.size();
        }
        return 0;
    }
    @Override
    public List<Emp> queryAll() {
        return BaseDao.executeQueryA("SELECT emp_id,emp_name,sex,phone_num, province,hire_date,dept_no,salary,password FROM tb_emp",Emp.class);
    }

    @Override
    public List<Emp> queryById(int empId) {
        return BaseDao.executeQueryA("SELECT emp_id,emp_name,sex,phone_num, province,hire_date,dept_no,salary,password FROM tb_emp where emp_id=?",Emp.class,empId);
    }

    @Override
    public int add(Emp emp) {
        return BaseDao.executeUpdate("INSERT INTO tb_emp (emp_name,sex,phone_num, province,hire_date,dept_no,salary,password) VALUES (?,?,?,?,?,?,?,?)",
               new Object[]{emp.getEmpName(),emp.getSex(),emp.getPhoneNum(),emp.getProvince(),
                       emp.getHireDate(), emp.getDeptNo(), emp.getSalary(), emp.getPassword()}  );
    }

    @Override
    public int update(Emp emp) {
        return BaseDao.executeUpdate("UPDATE tb_emp SET emp_name =?,sex =?, phone_num = ?, province = ?, hire_date = ?, dept_no = ?, salary = ?,password = ? WHERE emp_id = ?",
                new Object[]{emp.getEmpName(),emp.getSex(),emp.getPhoneNum(),emp.getProvince(),
                        emp.getHireDate(), emp.getDeptNo(), emp.getSalary(), emp.getPassword(),emp.getEmpId()}  );
    }

    @Override
    public int deleteById(int empId) {
        return BaseDao.executeUpdate("delete from tb_emp where emp_id = ?",new Object[]{empId});
    }

    @Override
    public List<Emp> queryName(String empName, String password) {
        return  BaseDao.executeQueryA("SELECT * FROM tb_emp where emp_name=? and password=?",Emp.class,empName,password);
    }
}
